import router from '@/router'
import store from '@/store'
import NProgress from 'nprogress' // 引入一份进度条插件
import 'nprogress/nprogress.css' // 引入进度条样式
const whiteList = ['/login', '/404']
// 路由前置守卫
router.beforeEach(async(to, from, next) => {
//  开启进度条
  NProgress.start()
  // console.log(store.getters.token)
  // 判断是否有token
  if (store.getters.token) {
    if (!store.state.user.userInfo.userId) {
      const res = await store.dispatch('user/getUserInfo')
      console.log(res.roles.menus)
      const routers = await store.dispatch('permission/filterRoutes', res.roles.menus)
      // 默认的router里面只有静态路由信息
      // 动态路由通过前端权限判断进行动态添加方法
      router.addRoutes([...routers, // 404 page must be placed at the end !!!
        { path: '*', redirect: '/404', hidden: true }])
      console.log(routers)

      // 重新在走一次
      return next(to.path)
    }
    // 如果有token，判断是不是去主页
    if (to.path === '/login') {
      next('/')
    } else {
      // 直接放行
      next()
    }
  } else {
    //  如果没有token
    //  判断是否在白名单
    if (whiteList.indexOf(to.path) > -1) {
      // 如果找到了，表示在白名单里,直接放行
      next()
    } else {
      // 如果没有找到，就跳转到登录页面
      next('/login')
    }
  }
  // 关闭进度条
  NProgress.done()
})
// 后置守卫
router.afterEach(() => {
  NProgress.done() // 关闭进度条
})
